Show language: C# VB.NET Both
This example demonstrates how to assign new documents added during import to a specific content category (testcon) and existing documents to be added when 'Auto Assign' is clicked from the Index Manager window. It is intended to provide you with a general guide for creating your own custom assembly for the Central Event System.
Please see the Central Event System overview.
using Keyoti.SearchEngine;
using Keyoti.SearchEngine.Events;
namespace Keyoti.SearchEngine
{
	public class ExternalEventHandler 
	{
    
		private IEventDispatcher dispatcher;
    
		private Configuration conf;
    
		public ExternalEventHandler(IEventDispatcher dispatcher, Configuration conf) 
		{
			Keyoti.SearchEngine.DataAccess.Log.WriteLogEntry("CustomAssembly", "SUCCESS", conf);
			dispatcher.Action += new ActionEventHandler(dispatcher_Action);
			this.dispatcher = dispatcher;
			this.conf = conf;
		}
    
		public void DetachHandlers() 
		{
			dispatcher.Action -= new ActionEventHandler(dispatcher_Action);
		}
    
		public void dispatcher_Action(object sender, Keyoti.SearchEngine.Events.ActionEventArgs e) 
		{
			// here we pay attention to the auto assign event, and add every document to "testcon"
			if ((e.ActionData.Name == ActionName.AutoAssignContent)) 
			{
				Keyoti.SearchEngine.DataAccess.DocumentRecord rec;
				Keyoti.SearchEngine.DataAccess.XmlDataAccess da;
				rec = ((Keyoti.SearchEngine.DataAccess.DocumentRecord)(e.ActionData.Data));
				da = ((Keyoti.SearchEngine.DataAccess.XmlDataAccess)(sender));
				rec.ContentCategories.Add(da.GetContentCategoryRecord("testcon"));
			}
		}
	}
}
Imports Keyoti.SearchEngine
Imports Keyoti.SearchEngine.Events
 
Public Class ExternalEventHandler
    Dim dispatcher As IEventDispatcher
    Dim conf As Configuration
    Public Sub New(ByVal dispatcher As IEventDispatcher, ByVal conf As Configuration)
        Keyoti.SearchEngine.DataAccess.Log.WriteLogEntry("CustomAssembly", "SUCCESS", conf)
        AddHandler dispatcher.Action, New ActionEventHandler(AddressOf dispatcher_Action)
 
        Me.dispatcher = dispatcher
        Me.conf = conf
    End Sub
    Public Sub DetachHandlers()
        RemoveHandler dispatcher.Action, New ActionEventHandler(AddressOf dispatcher_Action)
    End Sub
    Public Sub dispatcher_Action(ByVal sender As Object, ByVal e As Keyoti.SearchEngine.Events.ActionEventArgs)
        'here we pay attention to the auto assign event, and add every document to "testcon"
        If e.ActionData.Name = ActionName.AutoAssignContent Then
            Dim rec As Keyoti.SearchEngine.DataAccess.DocumentRecord
            Dim da As Keyoti.SearchEngine.DataAccess.XmlDataAccess
            rec = CType(e.ActionData.Data, Keyoti.SearchEngine.DataAccess.DocumentRecord)
            da = CType(sender, Keyoti.SearchEngine.DataAccess.XmlDataAccess)
            'now we have the document being assigned, lets give it a preset category
            'for this to work a category called "testcon" must already exist
            rec.ContentCategories.Add(da.GetContentCategoryRecord("testcon"))
        End If
    End Sub
End Class